/* 
 * Header file for Scene
 * Programming by SochiX (http://sochix.ru)
 */

#ifndef _SCENE_HPP
#define _SCENE_HPP

#include "cmpd_rt_object.hpp"
#include "light.hpp"

#include "../def.hpp"
#include "../graph/graph.hpp"
#include "../sys/time.hpp"


#include <string.h>
#include <vector>
#include <float.h>

class Scene: public CmpdRTobject
{
	private:
	Graph SDL;
	SDL_Surface *screen;
	
	void DoMainCycle(SDL_Surface * screen);
	bool isShadowed(Ray&,double, double&);
	std::vector<Light*> lightsList;

	public:
	Scene();
	void Render();
  	void AddLight(Light* object) {lightsList.push_back(object);};
	Color PhotoExposure(Color&); //very simple realization
	void SaveScreenshot(SDL_Surface * screen);
	
};

#endif	/* _CMPD_RT_OBJECT_HPP */
